﻿using System;
using System.ComponentModel;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Windows.Forms.Design;

namespace Kyoh.Lib.WinForms
{
    /// <summary>バインド可能なコンボボックスを提供します。</summary>
    [DefaultProperty("Items")]
    [ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.ToolStrip | ToolStripItemDesignerAvailability.MenuStrip | ToolStripItemDesignerAvailability.ContextMenuStrip)]
    public class ToolStripBindingComboBox : ToolStripComboBox
    {
        /// <summary>バインド対象のDataSourceを取得・設定します。</summary>
        [Browsable(true)]
        [RefreshProperties(RefreshProperties.Repaint)]
        [AttributeProvider(typeof(IListSource))]
        [DefaultValue("")]
        public object DataSource
        {
            get { return base.ComboBox.DataSource; }
            set { base.ComboBox.DataSource = value; }
        }
        /// <summary>表示するメンバの名前を取得・設定します。</summary>
        [TypeConverter("System.Windows.Forms.Design.DataMemberFieldConverter, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
        [DefaultValue("")]
        [Editor("System.Windows.Forms.Design.DataMemberFieldEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
        public string DisplayMember
        {
            get { return base.ComboBox.DisplayMember; }
            set { base.ComboBox.DisplayMember = value; }
        }
        /// <summary>表示に使用する <see cref="IFormatProvider"/> インターフェースの実装オブジェクトを取得・設定します。</summary>
        [EditorBrowsable(EditorBrowsableState.Advanced)]
        [Browsable(false)]
        [DefaultValue("")]
        public IFormatProvider FormatInfo
        {
            get { return base.ComboBox.FormatInfo; }
            set { base.ComboBox.FormatInfo = value; }
        }
        /// <summary>表示に使用するフォーマット定義文字列を取得・設定します。</summary>
        [MergableProperty(false)]
        [Editor("System.Windows.Forms.Design.FormatStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
        [DefaultValue("")]
        public string FormatString
        {
            get { return base.ComboBox.FormatString; }
            set { base.ComboBox.FormatString = value; }
        }
        /// <summary>表示にフォーマットを有効に使用するかどうかを取得・設定します。</summary>
        [DefaultValue(false)]
        public bool FormattingEnabled
        {
            get { return base.ComboBox.FormattingEnabled; }
            set { base.ComboBox.FormattingEnabled = value; }
        }
        /// <summary>SelectedItem として取得する際に使用するメンバの名前を取得・設定します。</summary>
        [DefaultValue("")]
        [Editor("System.Windows.Forms.Design.DataMemberFieldEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
        public string ValueMember
        {
            get { return base.ComboBox.ValueMember; }
            set { base.ComboBox.ValueMember = value; }
        }

    }
}
